package org.obvial.obvial;


import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.Observable;

//Autor: David Prado

public class GestorUsuarios extends Observable{
	
	//nombres contendra los nombres de todos los usuarios identificados
	private ArrayList <String> nombres;
	private static GestorUsuarios miGestorUsuarios = new GestorUsuarios();
	
	private GestorUsuarios(){
		nombres = new ArrayList <String>();
	}
	
	public static GestorUsuarios getGestorUsuarios(){
		return miGestorUsuarios;
	}
	
	public boolean identificacion (String nombreUsu, char[] password){
		
		String pwd = String.valueOf(password);
		
		Boolean result = false;
		
		try{
			ResultSet rs = GestorBD.getInstance().consulta("select * from usuario where nombre='"+nombreUsu+"' and password='"+pwd+"'");
			result = rs.next();
			GestorBD.getInstance().cerrarConsulta(rs);
		}catch (SQLException e) {
			e.printStackTrace();
		}
		
		if (result == true){
			nombres.add(nombreUsu);
			setChanged();
			notifyObservers(nombreUsu);
		}
		
		return result;
	
	}
	
	public boolean estaIdentificado(String pNombre){
		
		//Devolvera true si el usuario esta identificado, false en caso contrario
		boolean res = false;
		String aux = null;
		Iterator <String> itr = nombres.iterator();
		while (itr.hasNext() && res == false){
			
			aux = itr.next();
			if (aux.equalsIgnoreCase(pNombre)){
				res = true;
			}
			
		}
		return res;
	}
	
	public int obtenerIDUsuario(String pNombre){
		
		int res=0;
		
		try{
			ResultSet rs = GestorBD.getInstance().consulta("select id_usuario from usuario where nombre='"+pNombre+"'");
			rs.next();
			res = rs.getInt("Id_usuario");
			GestorBD.getInstance().cerrarConsulta(rs);
			
		} catch (SQLException e) {
			e.printStackTrace();
		}
		
		return res;
	}
	
	public int getTamanio(){
		return this.nombres.size();
	}
	
	public String getNombrePos(int pPos){
		return this.nombres.get(pPos);
	}
	
	public String obtenerNombreUsuario (int pIdUsu){
		String res = null;
		
		try{
			ResultSet rs = GestorBD.getInstance().consulta("select nombre from usuario where id_usuario='"+pIdUsu+"'");
			rs.next();
			res = rs.getString("nombre");
			GestorBD.getInstance().cerrarConsulta(rs);
			
		} catch (SQLException e) {
			e.printStackTrace();
		}
		
		return res;
	}
}
